package utils

import (
	"strconv"
	"strings"
)

// ConvStringInt 将字符串转换为数字
func ConvStringInt(s string) (int, error) {
	r, err := strconv.Atoi(s)
	if err != nil {
		return 0, err
	}
	return r, nil
}

// ConvStringIntWithDefault 将字符串转换为数字，若发生异常则返回默认数据
func ConvStringIntWithDefault(s string, d int) int {
	r, err := strconv.Atoi(s)
	if err != nil {
		// 转换异常不返回
		return d
	}
	return r
}

// ConvIntString int转为string
func ConvIntString(d int) string {
	return strconv.Itoa(d)
}

// ConvInt64String int64转为string
func ConvInt64String(d int64) string {
	return strconv.FormatInt(d, 10)
}

// ReplaceConvByteStrAll 转换字节数组为字符串并进行替换
func ReplaceConvByteStrAll(b []byte, r string) string {
	s := string(b)
	return strings.ReplaceAll(s, r, "")
}

// ReplaceConvByteCleanAll 转换字节数组为字符串并进行指定换行符等替换
func ReplaceConvByteCleanAll(b []byte) string {
	s := string(b)
	s = strings.ReplaceAll(s, "\n", "")
	s = strings.ReplaceAll(s, "\t", "")
	s = strings.ReplaceAll(s, "\r", "")
	return s
}

// SplitConvStringIntArr2 字符串分割，返回 [2]int 类型
func SplitConvStringIntArr2(s string, sep string) [2]int {
	ss := strings.Split(s, sep)
	var intArr [2]int
	for i, sv := range ss {
		si, err := ConvStringInt(sv)
		if err != nil {
			intArr[i] = 0
		} else {
			intArr[i] = si
		}
	}
	return intArr
}
